Chapter 6 System Architecture

The objective of this chapter is to introduce the concepts of software architecture and architectural design. When you have read the chapter, you will: 
■ understand why the architectural design of software is important; 
■ understand the decisions that have to be made about the software architecture during the architectural design process; 
■ have been introduced to the idea of Architectural patterns, well-tried ways of organizing software architectures that can be reused in system designs; 
■ understand how Application-Specific Architectural patterns may be used in transaction processing and language processing systems. 

Contents 
6.1 Architectural design decisions 
6.2 Architectural views 
6.3 Architectural patterns 
6.4 Application architecture

Architectural design is concerned with understanding how a software system should be organized and designing the overall structure of that system. In the model of the software development process that I described in Chapter 2, architectural design is the first stage in the software design process. It is the critical link between design and requirements engineering, as it identifies the main structural components in a system and the relationships between them. The output of the architectural design process is an architectural model that describes how the system is organized as a set of communicating components

System Modelling
Leads to design of system architecture
Small scale: programs
Large: complex

Communication about architecture(system design)
System analysis
Large scale reuse

DECISIONS
Performance
Security
Safety
Availability
Maintainability
(possible conflicts)

VIEWS
Logical view
Process view
Data flow
Development
Physical view

Generic as template
Decide:
How is the system distributed?
Strategy to control components
What patterns or styles
How document
What organization is best for requirements (non-functional)
How system is decomposed
how it is structured

Repository
	Designer’s repository
	Actual system repository

Types of architecture:
	Client and server
	Pipe and filter
	Database
	Transaction processing
	Information system
	Language processing system

Use of models:
	As a starting point
	As a design checklist
	As a way to organize development
	Assess components for reuse

What you want the system to do
Architecture
	Subsystems & interactions
Details of implementation may be delayed
Start figuring out how the system will be put together